/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.ipartek.formacion.gestformwww.controlador;

import com.ipartek.formacion.gestformwww.modelo.ModeloConvocatoria;
import com.ipartek.formacion.gestformwww.modelo.ModeloCurso;
import com.ipartek.formacion.gestformwww.modelo.ModeloTipoCurso;
import com.ipartek.formacion.gestformwww.modelo.beans.Curso;
import com.ipartek.formacion.gestformwww.modelo.beans.FiltroCurso;
import com.ipartek.formacion.gestformwww.modelo.beans.TipoCurso;
import com.ipartek.formacion.gestformwww.modelo.beans.excepciones.GestorFormacionExcepcion;
import java.util.ArrayList;
import java.util.List;
import java.util.ResourceBundle;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 *
 * @author Curso
 */
public class ListarCursoConvocatoriaAccion implements Accion {

    public AccionRouter ejecuta(HttpServlet servlet, HttpServletRequest request, HttpServletResponse response) {
        AccionRouter router = null;
        HttpSession sesion = request.getSession();

        ArrayList<Curso> cursos = new ArrayList<Curso>();
        //ModeloConvocatoria modeloConvocatoria = (ModeloConvocatoria) servlet.getServletContext().getAttribute("ModeloConvocatoria");
        ModeloCurso modeloCurso = (ModeloCurso) servlet.getServletContext().getAttribute("ModeloCurso");
        ResourceBundle rb = (ResourceBundle) servlet.getServletContext().getAttribute("acciones-mapeo");
        FiltroCurso filtro = null;
        int numCursos = 0;
        int numPags = 0;
        ArrayList<TipoCurso> tipoCurso = null;

        if (sesion.getAttribute("usuario") != null) //esta logueado
        {


            if (sesion.getAttribute("filtrocursos") != null) {
                filtro = (FiltroCurso) sesion.getAttribute("filtrocursos");
            } else {
                filtro = new FiltroCurso(rb);
            }


            filtro.setNombre(request.getParameter("filtroNombreCurso"));
            filtro.setEstado(request.getParameter("filtroEstado"));
            filtro.setTipo(request.getParameter("filtroTipoCurso"));
            filtro.setCliente(request.getParameter("filtroCliente"));
            filtro.setFechainiciocom(request.getParameter("filtroFInicio"));
            filtro.setFechainiciofin(request.getParameter("filtroFInicioFin"));
            filtro.setFechafincom(request.getParameter("filtroFFin"));
            filtro.setFechafinfin(request.getParameter("filtroFFinFin"));
            filtro.setLugar(request.getParameter("filtroLugar"));
            filtro.setDuracion(request.getParameter("filtroDuracion"));
            filtro.setColumnafiltrar(request.getParameter("filtroColumna"));
            filtro.setOrden(request.getParameter("filtroOrden"));
            filtro.setElementospag(request.getParameter("RegistroPagina"));
            filtro.setPagsiguiente(request.getParameter("id"));
            sesion.setAttribute("filtrocursos", filtro);

            try {
                tipoCurso = modeloCurso.listarTipoCurso();
                numCursos = modeloCurso.contarCursos(filtro);
                cursos = modeloCurso.listarCursos(filtro);
                numPags = filtro.getElementospag();
            } catch (GestorFormacionExcepcion ex) {
                Logger.getLogger(ListarCursoConvocatoriaAccion.class.getName()).log(Level.SEVERE, null, ex);
            }
            if (numCursos == 0) {
                ResourceBundle errores = (ResourceBundle) servlet.getServletContext().getAttribute("errores-mapeo");
                request.setAttribute("error", errores.getString("error-sin-resultados"));
            }
            request.setAttribute("numeroCursos", numCursos);
            int totalpaginas = numCursos / numPags;
            if ((numCursos % numPags) != 0) {
                totalpaginas++;
            }
            request.setAttribute("totalPagCursos", totalpaginas);


            router = new AccionRouter("principal");
            // router = new AccionRouter("prueba");
//                ListarCursoAccion listarCurso = new ListarCursoAccion();
//                listarCurso.ejecuta(servlet, request, response);


            request.setAttribute("listar-cursos", cursos);
            request.setAttribute("filtroCursos", filtro);
            request.setAttribute("tiposCurso", tipoCurso);
            request.setAttribute("contenido", "listar-cursos-conv");


        } else {
            router = new AccionRouter("inicio");
        }

        return router;

    }
}
